;--------loader和kernel------------------------
LOADER_STACK_TOP equ LOADER_BASE_ADDR
LOADER_BASE_ADDR    equ     0x900
LOADER_START_SECTOR equ     0x1
PAGE_DIR_TABLE_POS  equ     0x100000
KERNEL_START_SECTOR  equ 0x9
KERNEL_BIN_BASE_ADDR equ 0x70000
KERNEL_ENTRY_POINT   equ 0xc0001500

;---------gdt描述符属性-------------------------
DESC_G_4K           equ     1_00000000000000000000000b  ;23位，表示段界限粒度 0表示字节，1表示4KB
DESC_D_32           equ     1_0000000000000000000000b   ;22位，指示有效地址（段内偏移地址）及操作数的大小   0表示有效地址和操作数为16位，指令有效地址用IP寄存器  1表示是32位，用EIP寄存器
DESC_L              equ     0_000000000000000000000b    ;21位 保留位置为0即可，用来设置是否是64位代码段
DESC_AVL            equ     0_00000000000000000000b     ;20位 保留位置为0即可，用来设置是否可用
DESC_LIMIT_CODE2    equ     1111_0000000000000000b      ;19~16位，段界限高4位
DESC_LIMIT_DATA2    equ     DESC_LIMIT_CODE2
DESC_LIMIT_VIDEO2   equ     0000_000000000001011b       ;书中取全零，怀疑是错误的，因为保护模式的基地址是0xb8000，所以最后8位应该是b，而不是0
DESC_P              equ     1_000000000000000b          ;15位，段存在位  0表示不存在，1表示存在
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DESC_DPL_0          equ     00_0000000000000b           ;14~13位，Descriptor Privilege Level 用于指定段的访问权限级别,分别为0,1,2,3
DESC_DPL_1          equ     01_0000000000000b
DESC_DPL_2          equ     10_0000000000000b
DESC_DPL_3          equ     11_0000000000000b
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DESC_S_CODE         equ     1_000000000000b             ;12位,  0表示系统段 1表示数据段
DESC_S_DATA         equ     DESC_S_CODE
DESC_S_sys          equ     0_000000000000b             ;系统段
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DESC_TYPE_CODE      equ     1000_00000000b              ;11~8位  x=1,r=0,c=0,a=0 代码段是可执行的，不可读,非一致性，巳访问位a清0
DESC_TYPE_DATA      equ     0010_00000000b              ;11~8位  x=0,w=1,e=0,a=0 数据段是不可执行的，可写，向上扩展的，己访问位a清0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


DESC_CODE_HIGH4     equ     (0x00 << 24) + DESC_G_4K + DESC_D_32 + DESC_L + DESC_AVL + DESC_LIMIT_CODE2  + DESC_P + DESC_DPL_0 + DESC_S_CODE + DESC_TYPE_CODE + 0x00
DESC_DATA_HIGH4     equ     (0x00 << 24) + DESC_G_4K + DESC_D_32 + DESC_L + DESC_AVL + DESC_LIMIT_DATA2  + DESC_P + DESC_DPL_0 + DESC_S_DATA + DESC_TYPE_DATA + 0x00
DESC_VIDEO_HIGH4    equ     (0x00 << 24) + DESC_G_4K + DESC_D_32 + DESC_L + DESC_AVL + DESC_LIMIT_VIDEO2 + DESC_P + DESC_DPL_0 + DESC_S_DATA + DESC_TYPE_DATA + 0x00

;----------选择子属性--------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RPL0                equ     00b
RPL1                equ     01b
RPL2                equ     10b
RPL3                equ     11b
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TI_GDT              equ     000b                        ;0为GDT，1为LDT
TI_LDT              equ     100b

;-------------页表相关属性--------
PG_P                equ     1b
PG_RW_R             equ     00b
PG_RW_W             equ     10b
PG_US_S             equ     000b
PG_US_U             equ     100b


PT_NULL equ 0